The invention relates to communication of digital data using trellis coded modulation with punctured convolutional codes. In particular, the invention relates to a depuncture technique employed in a receiver to process punctured convolutional codes in digital communication systems.
FIG. 1 (Related Art) is a block diagram of a typical digital communication system, which includes a transmitter 10, a receiver 20 and a channel 30 for transmitting data, which may be speech, images, video and others. As shown in FIG. 1, transmitter 10 includes a forward-error-correction (FEC) encoder 12, which encodes information bits using a convolutional encoder, and a modulator 14, which utilizes one or more of various modulation schemes, such as Phase Shift Keying (PSK) and Quadrature Amplitude Modulation (QAM), to modulate the output of the FEC encoder 12. The modulated symbol stream is tuned to the desired band and desired carrier frequency by a radio processor (not shown) for transmission. Conversely, the transmitted symbol stream is received and processed by receiver 20. Demodulator 24 demodulates the received symbol stream using a demodulation scheme associated with the modulation scheme utilized in the transmitter 10 and FEC decoder 22 decodes the demodulated symbols into the recovered bits using a convolutional decoder.
The FEC encoder/decoder employs convolutional codes, one type of error correction codes, and widely utilized in many practical communication systems to provide transmitted data with error correction capability by generating one or more parity bits from each bit to be transmitted. The ratio of data bits to parity bits is referred to as a code rate. For example, a convolutional encoder with code rate of 1/3 receives one bit and outputs three bits.
A practical example of a digital communication system is illustrated here to explain the FEC scheme. FIG. 2 (Related Art) is a block diagram of a conventional cable modem transmission system using a FEC decoder 12/encoder 2, which complies with the standard of ITU-R Recommendation J-83 Annex B (hereafter called J83B standard). In FIG. 2, modulator 14 and demodulator 24 shown in FIG. 1 are merged into the TCM encoder 126 and the TCM decoder 226, respectively. The J83B standard specifies two modulation/demodulation schemes, including 64- and 256-QAM. The FEC encoder 12 includes a Reed Solomon (RS) encoder 120, a convolutional interleaver 122, a randomizer 124 and a Trellis coded modulation (TCM) encoder 126. In this example, channel 30 represents a cable medium. Conversely, the FEC decoder 22 includes a TCM decoder 226, a de-randomizer 224, a convolutional de-interleaver 222 and a RS decoder 220.
The RS encoder 120 adds redundancy bits into the information bits for correction of up to 3 symbol errors. The convolutional interleaver 122 modifies the order of the RS-encoded information bits to reduce burst mode errors. The randomizer 124 performs a bit-wise exclusive-OR (XOR) operation to assure a random transmitted sequence. The TCM encoder 126 adds redundancy to the data to improve the signal-to-noise ratio by increasing the symbol constellation without increasing the symbol rate, which will be described in detail. The TCM encoded data is sent to the FEC decoder 22 over channel 30. The TCM decoder 226 decodes the TCM encoded data using a decoding scheme, such as Viterbi algorithm. The de-randomizer 224, the convolutional de-interleaver 222 and the RS decoder 220 performs the reverse functions to retrieve the recovered bits.
As described, the 64- or 256-QAM modulator/demodulator is merged into the TCM encoder/decoder, respectively, in the J83B standard. FIG. 3 (Related Art) is a block diagram of a conventional TCM encoder with a 64-QAM modulator shown in FIG. 2. The other example, which uses the 256-QAM modulator/demodulator, can be found in the J83B standard and will be described here. In FIG. 3, the TCM encoder 126 serially receives 128 7-bit FEC frames. Parser 300 identifies a group of four 7-bit symbols (i.e. 28 bits) and assigns as an in-phase “I” component and a quadrature “Q” component. As indicated in FIG. 3, for the I component, the parser 300 outputs two upper uncoded bit streams 302 (I1, I4, I7, I10, I12) and 301 (I2, I5, I8, I11, I13) and one lower coded bit stream 305 (I0, I3, I6, I9). For the Q component, the parser 300 outputs two upper uncoded bit streams 304 (Q1, Q4, I7, Q10, Q12) and 303 (Q2, Q5, Q8, Q11, Q13) and one lower coded bit stream 306 (Q0, Q3, Q6, Q9). The uncoded bit streams 301, 302, 303 and 304 are sent to a QAM mapper 340, and the coded bit streams 305 and 306 are sent to a differential pre-coder 310. The differential pre-coder 310 performs rotationally invariant trellis coding on I and Q bit pairs, that is, Q0 and I0, Q3 and I3, Q6 and I6, and Q9 and I9. The differential pre-coder 310 then transmits the differentially encoded lower streams X and Y to punctured binary convolutional encoders 320 and 330, respectively.
The punctured binary convolutional encoders 320 and 330 are rate 1/2 binary convolutional encoders with punctured codes. Usually, error correction codes, such as RS codes and TCM codes, add redundancy to upgrade anti-noise capability. Unfortunately, payload will be much reduced due to excessive redundancy if all encoded parity bits are transmitted. Puncturing can be applied to error correction codes to compensate the decrease in payload, which bypasses the transmission of some of the parity bits previously agreed on by the transmitter and the receiver. The punctured binary convolutional encoders 320 and 330, complying with the J85B standard, utilize a puncture rate 5/8, which means that only 5 bits are transmitted for every 8 bits from the convolutional encoder, resulting in an overall punctured code rate 4/5, that is, 5 bits are generated according to 4 input bits.
FIG. 4 (Related Art) is a block diagram of the punctured binary convolutional encoder 320 shown in FIG. 3. The punctured binary convolutional encoder 330 has a structure similar to that of encoder 320 and will not be described again. The punctured binary convolutional encoder 320 includes four registers 321, 322, 323 and 324, two exclusive-OR gates 325 and 326, and a commutator 328. The four registers 321-324 store four previous input bits X[0], X[−1], X[−2] and X[−3], and there are 16 states in the punctured binary convolutional encoder 320. As shown in FIG. 4, codes OUTU and OUTL can be expressed by:OUTU=X[1]⊕X[−1]⊕X[−3];  (1)OUTL=X[1]⊕X[0]⊕X[−1]⊕X[−2]⊕X[−3]  (2)
Equations (1) and (2) are determined by generating codes G1 and G2, where G1=[010101] and G2=[011111]. It is noted that different convolutional coders have different generating codes. Commutator 328 implements the puncture function using puncture matrix [P1;P2]=[000D;ABCE], where “0” indicates no transmission and “ABCDE” indicate transmission in order.
For each trellis group, the punctured binary convolutional encoder 320 can generate 8 convolutionally encoded bits from 4 input bits represented by X[1], X[2], X[3] and X[4]. The commutator 328 selects 5 bits from the 8 convolutionally encoded bits to be outputs U[1], U[2], U[3], U[4] and U[5] according to the puncture matrix. That is, code puncturing converts a code rate 1/2 to a punctured code rate 4/5 since only 5 encoded bits are retained after puncturing.
Decoding the convolutional codes with puncture codes requires familiarity with convolutional coding mechanism and the puncture matrix. In the J83B cable system, for example, it is also necessary to ascertain the puncture boundary or punctured position from an incoming bit stream since there is no training sequence therein. As illustrated, a group of five output coded bits is generated by four input bits, indicating five possible punctured positions for the incoming bit stream of the TCM decoder in the receiver.
U.S. Pat. No. 6,233,712 discloses a 64/256 Quadrature Amplitude Modulation Trellis Coded Modulation (QAMTCM) decoder, capable of determining the punctured position. As disclosed therein, the decoder includes a depuncture circuit, a Viterbi decoder, a re-encode/puncture circuitry and a synchronization circuit. The incoming QAM signal stream is first demodulated into an in-phase component and a quadrature component. The depuncture 404 generates a depunctured in-phase component and a depunctured quadrature component using a punctured position for testing. The Viterbi decoder generates a decoded in-phase bit and a decoded quadrature bit for each pair of symbols. The re-encode/puncture circuitry performs binary convolutional encoding and puncturing on the decoded in-phase and quadrature bits to recover the incoming encoded symbols for testing. Conversely, the synchronization circuit performs hard decision on the in-phase component and a quadrature component to generate hard symbols, and compares the hard symbols with the recovered encoded symbols for the re-encode/puncture circuitry. If the punctured position for testing is accurate, the difference between the hard symbols and the recovered encoded symbols is minimal.
However, the method for detecting the punctured position adopted by U.S. Pat. No. 6,233,712 requires extra encode/puncture circuitry, increasing manufacturing costs and complicating product design.